home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / PasLibIntf.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  7.3 KB  |  282 lines  |  [TEXT/MPS ]

  1. (**-------------------------------------------------------------------------------*
  2.  |                                                                                 |
  3.  |                          <<< Pascal Library Interface >>>                         |
  4.  |                                                                                 |
  5.  |                      Copyright Apple Computer, Inc. 1986, 1992, 1994             |
  6.  |                               All rights reserved.                              |
  7.  |                                                                                 |
  8.  *-------------------------------------------------------------------------------**)
  9.  
  10. (*
  11.  Interface to the Pascal I/O and Memory Manager Library.
  12.  Built-in procedure and* function declarations are marked with
  13.  the (* *) comment characters
  14. *)
  15.  
  16. (*$TAGS-*)
  17. (*$CALLING PASCAL*)
  18. MODULE PasLibIntf;
  19.  
  20. IMPORT SYSTEM, Types, Files;
  21.  
  22. (* $IF UNDEFINED UsingAliases AND UNDEFINED __ALIASES__*)
  23. (* $I $$Shell(PInterfaces)Aliases.p*)
  24. (* $END*)
  25.  
  26. (* $ALIGN MAC68K*)
  27. (* $SETC UsingIncludes := PASLIBINTFIncludes*)
  28.  
  29.     TYPE
  30.       PASCALPOINTER* = SYSTEM.PTR (*ΔΔ POINTER TO INTEGER*); (* Universal POINTER type *)
  31.       PASCALFILE* = LONGINT (*ΔΔ FILE*); (* Universal FILE type *)
  32. (*
  33.  *      PASCALBLOCK* =    (* Universal block of chars *)
  34.  *            (*ΔΔPACKEDΔΔ*) ARRAY [0..511] OF CHAR;
  35.  *)
  36.  
  37.     CONST
  38.       (* <StdIO.h> PLSetVBuf styles *)
  39.       _IOFBF* = $00; (* File buffering *)
  40.       _IOLBF* = $40; (* Line buffering *)
  41.       _IONBF* = $04; (* No buffering *)
  42.  
  43. (*
  44.  Mac Pascal heap management
  45. *)
  46.  
  47.     PROCEDURE PLHeapInit*(sizepheap: LONGINT; heapDelta: LONGINT;
  48.                          memerrProc: (*ΔΔUNIVΔΔ*) PASCALPOINTER; allowNonCont: BOOLEAN;
  49.                          forDispose: BOOLEAN);
  50.         EXTERNAL PASCAL;
  51. (*
  52.  The following procedure is* obsolete, use PLHeapInit
  53. *)
  54.  
  55.     PROCEDURE PLInitHeap*(sizepheap: LONGINT; memerrProc: (*ΔΔUNIVΔΔ*) PASCALPOINTER;
  56.                          allowNonCont: BOOLEAN; allowDispose: BOOLEAN);
  57.         EXTERNAL PASCAL;
  58.  
  59.     PROCEDURE PLSetNonCont*(allowNonCont: BOOLEAN);
  60.         EXTERNAL PASCAL;
  61.  
  62.     PROCEDURE PLSetMErrProc*(memerrProc: (*ΔΔUNIVΔΔ*) PASCALPOINTER);
  63.         EXTERNAL PASCAL;
  64.  
  65.     PROCEDURE PLSetHeapType*(forDispose: BOOLEAN);
  66.         EXTERNAL PASCAL;
  67.  
  68.     PROCEDURE PLSetHeapCheck*(DoIt: BOOLEAN);
  69.         EXTERNAL PASCAL;
  70.  
  71. (*
  72.  File I/O
  73. *)
  74.  
  75. (*
  76.  *      PROCEDURE
  77.  *        RESET(VAR fvar:  (*ΔΔUNIVΔΔ*) PASCALFILE; OPT fname: STRING);
  78.  *        BUILTIN;
  79.  *
  80.  *      PROCEDURE
  81.  *        REWRITE(VAR fvar: (*ΔΔUNIVΔΔ*) PASCALFILE; OPT fname: STRING);
  82.  *        BUILTIN;
  83.  *
  84.  *      PROCEDURE
  85.  *        OPEN(VAR fvar:    (*ΔΔUNIVΔΔ*) PASCALFILE; fname: STRING);
  86.  *        BUILTIN;
  87.  *)
  88.  
  89.     PROCEDURE PLSetVBuf*(VAR fvar: LONGINT (*ΔΔ TEXT*); buffer: (*ΔΔUNIVΔΔ*) PASCALPOINTER;
  90.                         style: INTEGER; bufsize: INTEGER);
  91.         EXTERNAL PASCAL;
  92. (*
  93.  *      PROCEDURE
  94.  *        BLOCKREAD(
  95.  *          VAR fvar: FILE;
  96.  *          VAR buffer: (*ΔΔUNIVΔΔ*) PASCALBLOCK;
  97.  *          nBlocks: INTEGER;
  98.  *          OPT stBlock:INTEGER
  99.  *        ):
  100.  *        INTEGER;
  101.  *        BUILTIN;
  102.  *
  103.  *      PROCEDURE
  104.  *        BLOCKWRITE(
  105.  *          VAR fvar: FILE;
  106.  *          VAR buffer: (*ΔΔUNIVΔΔ*) PASCALBLOCK;
  107.  *          nBlocks: INTEGER;
  108.  *          OPT stBlock:INTEGER
  109.  *        ):
  110.  *        INTEGER;
  111.  *        BUILTIN;
  112.  *
  113.  *      PROCEDURE
  114.  *        BYTEREAD(
  115.  *          VAR fvar: FILE;
  116.  *          VAR buffer: (*ΔΔUNIVΔΔ*) PASCALBLOCK;
  117.  *          nBytes:  LONGINT;
  118.  *          OPT stByte: LONGINT
  119.  *        ):
  120.  *        LONGINT;
  121.  *        BUILTIN;
  122.  *
  123.  *      PROCEDURE
  124.  *        BYTEWRITE(
  125.  *          VAR fvar: FILE;
  126.  *          VAR buffer: (*ΔΔUNIVΔΔ*) PASCALBLOCK;
  127.  *          nBytes:  LONGINT;
  128.  *          OPT stByte: LONGINT
  129.  *        ):
  130.  *        LONGINT;
  131.  *        BUILTIN;
  132.  *
  133.  *      PROCEDURE
  134.  *        EOF(OPT VAR fvar: (*ΔΔUNIVΔΔ*) PASCALFILE):
  135.  *        BOOLEAN;
  136.  *        BUILTIN;
  137.  *
  138.  *      PROCEDURE
  139.  *        EOLN(OPT VAR fvar: TEXT):
  140.  *        BOOLEAN;
  141.  *        BUILTIN;
  142.  *
  143.  *      PROCEDURE
  144.  *        READ(VAR fvar: TEXT; OPT EXPR_LIST);
  145.  *        BUILTIN;
  146.  *
  147.  *      PROCEDURE
  148.  *        READLN(OPT VAR fvar: TEXT; OPT EXPR_LIST);
  149.  *        BUILTIN;
  150.  *
  151.  *      PROCEDURE
  152.  *        WRITE(VAR fvar: TEXT; OPT EXPR_LIST);
  153.  *        BUILTIN;
  154.  *
  155.  *      PROCEDURE
  156.  *        WRITELN(OPT VAR fvar: TEXT; OPT EXPR_LIST);
  157.  *        BUILTIN;
  158.  *
  159.  *      PROCEDURE
  160.  *        GET(VAR fvar: (*ΔΔUNIVΔΔ*) PASCALFILE);
  161.  *        BUILTIN;
  162.  *
  163.  *      PROCEDURE
  164.  *        PUT(VAR fvar: (*ΔΔUNIVΔΔ*) PASCALFILE);
  165.  *        BUILTIN;
  166.  *
  167.  *      PROCEDURE
  168.  *        SEEK(VAR fvar: (*ΔΔUNIVΔΔ*) PASCALFILE; recno: LONGINT);
  169.  *        BUILTIN;
  170.  *)
  171.  
  172.     PROCEDURE PLFilePos*(VAR fvar: (*ΔΔUNIVΔΔ*) PASCALFILE): LONGINT;
  173.         EXTERNAL PASCAL;
  174.  
  175.     PROCEDURE PLFlush*(VAR fvar: LONGINT (*ΔΔ TEXT*));
  176.         EXTERNAL PASCAL;
  177.  
  178.     PROCEDURE PLCrunch*(VAR fvar: (*ΔΔUNIVΔΔ*) PASCALFILE);
  179.         EXTERNAL PASCAL;
  180.     
  181. (*
  182.  Directory operations.
  183. *)
  184.  
  185.     PROCEDURE PLPurge*(fname: Types.Str255 (*ΔΔ STRING*));
  186.         EXTERNAL PASCAL;
  187.  
  188.     PROCEDURE PLRename*(oldFname, newFname: Types.Str255 (*ΔΔ STRING*));
  189.         EXTERNAL PASCAL;
  190.  
  191. (*
  192.  Miscellaneous Operations
  193. *)
  194.  
  195. (* The following definition has been moved to MacRuntime.p *)
  196. (*    PROCEDURE TrapAvailable*(trap: INTEGER): BOOLEAN; *)
  197.  
  198. (* The following functions can no longer be called directly from Pascal.
  199.   They have been replaced by IExxxxx glue routines, defined below. *)
  200.  
  201.  (*
  202.     PROCEDURE ResolveFolderAliases* (volume: INTEGER; directory: LONGINT;
  203.                                    path: Types.Str255; resolveLeafName: BOOLEAN;
  204.                                    VAR theSpec: Files.FSSpec; VAR isFolder, hadAlias,
  205.                                    leafIsAlias: BOOLEAN): Types.OSErr; C;
  206.  
  207.     PROCEDURE MakeResolvedFSSpec* (volume: INTEGER; directory: LONGINT;
  208.                                  path: Types.Str255; VAR theSpec: Files.FSSpec; VAR isFolder,
  209.                                  hadAlias, leafIsAlias: BOOLEAN): Types.OSErr; C;
  210.     
  211.     PROCEDURE MakeResolvedPath* (volume: INTEGER; directory: LONGINT; path: Types.Str255;
  212.                                resolveLeafAlias: BOOLEAN; VAR buffer: Types.Str255;
  213.                                VAR isFolder, hadAlias, leafIsAlias: BOOLEAN):
  214.                                Types.OSErr; C;
  215. *)
  216.  
  217.     PROCEDURE IEResolveFolderAliases* (volume: INTEGER; directory: LONGINT;
  218.                                      path: Types.Str255; resolveLeafName: BOOLEAN;
  219.                                      VAR theSpec: Files.FSSpec; VAR isFolder, hadAlias,
  220.                                      leafIsAlias: BOOLEAN): Types.OSErr;
  221.         EXTERNAL PASCAL;
  222.  
  223.     PROCEDURE IEMakeResolvedFSSpec* (volume: INTEGER; directory: LONGINT;
  224.                                    path: Types.Str255; VAR theSpec: Files.FSSpec; VAR isFolder,
  225.                                    hadAlias, leafIsAlias: BOOLEAN): Types.OSErr;
  226.         EXTERNAL PASCAL;
  227.     
  228.     PROCEDURE IEResolvePath* (VAR rawPath: Types.Str255; VAR resolvedPath: Types.Str255;
  229.                             VAR isFolder, hadAlias: BOOLEAN): Types.OSErr;
  230.         EXTERNAL PASCAL;
  231.  
  232.     PROCEDURE IEMakeResolvedPath* (volume: INTEGER; directory: LONGINT; path: Types.Str255;
  233.                                  resolveLeafAlias: BOOLEAN; VAR buffer: Types.Str255;
  234.                                  VAR isFolder, hadAlias, leafIsAlias: BOOLEAN):
  235.                                  Types.OSErr;
  236.         EXTERNAL PASCAL;
  237. (*
  238.  C string functions for Pascal strings
  239. *)
  240.      PROCEDURE PLStrCmp*(string1, string2: Types.Str255): INTEGER;
  241.         EXTERNAL PASCAL;
  242.  
  243.     PROCEDURE PLStrnCmp*(string1, string2: Types.Str255; n: INTEGER): INTEGER;
  244.         EXTERNAL PASCAL;
  245.  
  246.     PROCEDURE PLStrCpy*(VAR string1: Types.Str255; string2: Types.Str255): Types.StringPtr;
  247.         EXTERNAL PASCAL;
  248.  
  249.     PROCEDURE PLStrnCpy*(VAR string1: Types.Str255; string2: Types.Str255; n: INTEGER): Types.StringPtr;
  250.         EXTERNAL PASCAL;
  251.  
  252.     PROCEDURE PLStrCat*(VAR string1: Types.Str255; string2: Types.Str255): Types.StringPtr;
  253.         EXTERNAL PASCAL;
  254.  
  255.     PROCEDURE PLStrnCat*(VAR string1: Types.Str255; string2: Types.Str255; n: INTEGER): Types.StringPtr;
  256.         EXTERNAL PASCAL;
  257.  
  258.     PROCEDURE PLStrChr*(string1: Types.Str255; c: CHAR): Types.Ptr;
  259.         EXTERNAL PASCAL;
  260.  
  261.     PROCEDURE PLStrrChr*(string1: Types.Str255; c: CHAR): Types.Ptr;
  262.         EXTERNAL PASCAL;
  263.  
  264.     PROCEDURE PLStrPBrk*(string1, string2: Types.Str255): Types.Ptr;
  265.         EXTERNAL PASCAL;
  266.  
  267.     PROCEDURE PLStrSpn*(string1, string2: Types.Str255): INTEGER;
  268.         EXTERNAL PASCAL;
  269.  
  270.     PROCEDURE PLStrStr*(string1, string2: Types.Str255): Types.Ptr;
  271.         EXTERNAL PASCAL;
  272.  
  273.     PROCEDURE PLStrLen*(string1: Types.Str255): INTEGER;
  274.         EXTERNAL PASCAL;
  275.     
  276.     PROCEDURE PLPos*(STRING1: Types.Str255; STRING2: Types.Str255): INTEGER;
  277.         EXTERNAL PASCAL;
  278.  
  279. (* $ALIGN RESET*)
  280.  
  281.     END PasLibIntf.
  282.